Схемы
данных
Схемы
данных (Schemas)
являются альтернативным
способом создания правил
построения XML-документов.
По сравнению с DTD,
схемы обладают более
мощными средствами для
определения сложных
структур данных,
обеспечивают более
понятный способ описания
грамматики языка, способны
легко модернизироваться и
расширяться. Безусловным
достоинством схем
является также то, что они
позволяют описывать
правила для XML-
документа средствами
самого же XML.
Однако
это не означает, что схемы
могут полностью заменить DTD-
описания - этот способ
определения грамматики
языка используется сейчас
практическими всеми
верифицирующими
анализаторами XML
и, более того, сами схемы,
как обычные XML-
элементы, тоже описываются
DTD. Но серьезные
возможности нового языка и
его относительная
простота, безусловно, дают
основания утверждать, что
будущий стандарт найдет
широкое применение в
качестве удобного и
эффективного средства
проверки корректности
составления документов.
Как
это выглядит
Внешне
документы схем очень
похожи на те документы XML,
с которыми мы уже
встречались в предыдущих
разделах. Мы размечаем
документ при помощи
специальных элементов,
выполняющих в схемах роль
инструкций. Эти инструкции
составляют набор правил,
используя которые,
программа-клиент будет
делать вывод о том,
корректен документ или
нет. Схема данных,
например, может выглядеть
следующем образом:
<schema id="OurSchema">
<elementType id="#title">
<string/>
</elementType>
<elementType id="photo">
<element type="#title">
<attribute name="src"/>
</elementType>
<elementType id="gallery">
<element type="#photo">
</elementType>
</schema>
Если мы
включим приведенные
правила внутрь XML-
документа,
программа-клиент сможет
использовать их для
проверки. Т.е. она теперь
сможет определить, что
правильным будет являться
следующий фрагмент:
<gallery>
<photo id="1"><title>My computer</title></photo>
<photo id="2"><title>My family</title></photo>
<photo id="3"><title>My dog</title></photo>
</gallery>
, а
некорректным этот:
<gallery>
<photo id="1"/>
<photo index="2"><title>My family</title></photo>
<photo index="3"><title> My dog </title><dogname>Sharik</dogname></photo>
</gallery>
Все
конструкции языка схем
описываются правилами "XML
DTD for XML-Data-Schema". Этот документ
вы можете найти среди
другой официальной
документации, доступной на
сервере W3 -
консорциума. В этой статье
мы коснемся лишь основных
приемов для работы со
схемами данных. Ссылки на
более подробные источники
приведены в конце.
Область
схемы данных
Создавая
схемы данных, мы
определяем в документе
специальный элемент, <schema>;, внутри
которого содержатся
описания правил:
<schema id="OurSchema">
<!-- последовательность инструкций -->
</schema>
Если
использовать отдельное
пространство имен, то
полный XML-документ,
содержащий в себе схему
данных, будет выглядеть
следующим образом:
<?XML version='1.0' ?>
<?xml:namespace href="http://www.mrcpk.nstu.ru/schemas/" as="s"/?>
<s:schema id="OurSchema">
<!-- последовательность инструкций -->
</s:schema>
Описание
элементов
Для
определения класса
элемента, к которому в
дальнейшем будут
применяться инструкции,
описывающие его
содержимое и структуру,
предназначен специальный
элемент схемы elementType,
<elementType id="issue">
<descript>Элемент содержит информацию об очередном выпуске журнала</descript>
</elementType>
Название
элемента задается
атрибутом id . Все
дальнейшие инструкции,
которые относятся к
описываемому классу,
определяют его внутреннюю
структуру и набор
допустимых данных,
содержатся внутри блока,
заданного тэгами <elementType>
и </elementType>. Мы рассмотрим
эти инструкции чуть позже.
Как видно
из примера, при
определении класса
элемента, можно также
использовать комментарии
к нему, которые
заключаются в тэги <descript></descript>
Атрибуты
элемента
Для того,
чтобы в описании элемента
определить его атрибуты и
описать свойства этих
атрибутов мы должны
использовать элемент attribute:
<elementType id="photo">
<attribute name="src"/>
<empty/>
</elementType>
В данном
примере элементу <photo> определяется
атрибут src, значением
которого может быть любая
последовательность
разрешенных символов:
<photo src="0"/>
<photo src="some text">
Подобно DTD,
схемы данных позволяют
устанавливать ограничения
на значения и способ
использования атрибутов.
Для этого в дескрипторе <attribute> необходимо
использовать параметр atttype.
Например,
если мы хотим указать, что
значение атрибута должно
использоваться
программой-анализатором
как уникальный
идентификатор, то нам
необходимо создать
следующее правило:
<elementType id="bouquet">
<attribute name="id" atttype="ID">
</elementType>
Если же
требуется задать список
возможных значений
атрибута, то пример будет
выглядеть следующим
образом:
<attribute name="flower" atttype="ENUMERATION" values="red green blue" default="red">
Для
приведенных примеров
корректным будет являться
следующий фрагмент XML-документа:
<bouquet id="0">
<flower color="red">rose</flower>
<flower color="green">leaf</flower>
<flower color="blue">bluet</flower>
</bouquet>
назад
содержание
вперед
|